package com.smedi.ismedi.inmail.core.application.query;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.smedi.ismedi.inmail.api.dto.request.DingDingProjectRequest;
import com.smedi.ismedi.inmail.core.application.command.*;
import com.smedi.ismedi.inmail.core.application.query.vo.*;

import java.util.List;

/**
 * 通知公告查询服务
 *
 * @author jiangqinxuan
 * @date 2021/07/30
 */
public interface OverviewQueryService {
    /**
     * 项目统计 分页 查询
     *
     * @param projectOverviewPageCommand 查询条件
     * @return Page<ProjectOverviewVo>
     */
    ProjectOverviewPageVo getProjectOverviewPage(ProjectOverviewPageCommand projectOverviewPageCommand);

    /**
     * 项目统计 列表 查询
     *
     * @param projectOverviewListCommand 查询条件
     * @return List<ProjectOverviewVo>
     */
    List<ProjectOverviewVo> getProjectOverviewList(ProjectOverviewListCommand projectOverviewListCommand);
    
    /**
     * 安全检查统计 分页 查询
     *
     * @param safetyCheckProjectOverviewPageCommand 查询条件
     * @return Page<SafetyCheckOverviewVo>
     */
    Page<SafetyCheckProjectOverviewVo> getSafetyCheckProjectOverviewPage(SafetyCheckProjectOverviewPageCommand safetyCheckProjectOverviewPageCommand);

    /**
     * 安全检查统计 列表 查询
     *
     * @param safetyCheckProjectOverviewListCommand 查询条件
     * @return List<SafetyCheckOverviewVo>
     */
    List<SafetyCheckProjectOverviewVo> getSafetyCheckProjectOverviewList(SafetyCheckProjectOverviewListCommand safetyCheckProjectOverviewListCommand);

    /**
     * 安全检查统计 分页 查询
     *
     * @param safetyCheckOrganizationOverviewPageCommand 查询条件
     * @return Page<SafetyCheckOverviewVo>
     */
    SafetyCheckOrgOverviewPageVo getSafetyCheckOrganizationOverviewPage(SafetyCheckOrganizationOverviewPageCommand safetyCheckOrganizationOverviewPageCommand);

    /**
     * 安全检查统计 列表 查询
     *
     * @param safetyCheckOrganizationOverviewListCommand 查询条件
     * @return List<SafetyCheckOverviewVo>
     */
    List<SafetyCheckOrganizationOverviewVo> getSafetyCheckOrganizationOverviewList(SafetyCheckOrganizationOverviewListCommand safetyCheckOrganizationOverviewListCommand);

    /**
     * 人员考勤统计 分页 查询
     *
     * @param attendanceOverviewPageCommand 查询条件
     * @return Page<AttendanceOverviewVo>
     */
    Page<AttendanceOverviewVo> getAttendanceOverviewPage(AttendanceOverviewPageCommand attendanceOverviewPageCommand);

    /**
     * 项目级别统计 分页 查询
     *
     * @param projectOverviewPageCommand 查询条件
     * @return Page<ProjectPersonOverViewVo>
     */
    Page<ProjectPersonOverViewVo> getProjectLevelOverViewPage(ProjectOverviewPageCommand projectOverviewPageCommand);

    /**
     * 项目级别统计 分页 查询
     *
     * @param projectOverviewPageCommand 查询条件
     * @return Page<ProjectPersonOverViewVo>
     */
    Page<ProjectPostOverViewVo> getProjectPostOverViewPage(ProjectOverviewPageCommand projectOverviewPageCommand);

    /**
     * 项目级别 岗位人员列表
     * */
    List<ProjectJobPersonVo> projectJobPersonList(Long projectId, String projectJob);

    /**
    * 项目级别 岗位人员列表 查看
    * */
    ProjectPostPersonOverViewVo projectPostPerson(Long projectId);

    /**
     * 人员考勤统计 列表 查询
     *
     * @param attendanceOverviewListCommand 查询条件
     * @return List<AttendanceOverviewVo>
     */
    List<AttendanceOverviewVo> getAttendanceOverviewList(AttendanceOverviewListCommand attendanceOverviewListCommand);

    /**
     * 视频监控统计（主体院） 分页 查询
     *
     * @param videoMonitorOrganizationOverviewPageCommand 查询条件
     * @return Page<VideoMonitorOverviewVo>
     */
    VideoMonitorOrgOverviewPageVo getVideoMonitorOrganizationOverviewPage(VideoMonitorOrganizationOverviewPageCommand videoMonitorOrganizationOverviewPageCommand);

    /**
     * 视频监控统计（主体院） 列表 查询
     *
     * @param videoMonitorOrganizationOverviewListCommand 查询条件
     * @return List<VideoMonitorOverviewVo>
     */
    List<VideoMonitorOrganizationOverviewVo> getVideoMonitorOrganizationOverviewList(VideoMonitorOrganizationOverviewListCommand videoMonitorOrganizationOverviewListCommand);
    
    /**
     * 视频监控统计（项目） 分页 查询
     *
     * @param videoMonitorProjectOverviewPageCommand 查询条件
     * @return Page<VideoMonitorOverviewVo>
     */
    Page<VideoMonitorProjectOverviewVo> getVideoMonitorProjectOverviewPage(VideoMonitorProjectOverviewPageCommand videoMonitorProjectOverviewPageCommand);

    /**
     * 视频监控统计（项目） 列表 查询
     *
     * @param videoMonitorProjectOverviewListCommand 查询条件
     * @return List<VideoMonitorOverviewVo>
     */
    List<VideoMonitorProjectOverviewVo> getVideoMonitorProjectOverviewList(VideoMonitorProjectOverviewListCommand videoMonitorProjectOverviewListCommand);

    /**
     * 钉钉主体院考勤统计 分页 查询
     *
     * @param dingAttendanceOverViewPageCommand 查询条件
     * @return Page<DingAttendanceOverView>
     * */
    Page<DingAttendanceOverViewVo> getDingAttendanceOverViewPage(DingAttendanceOverViewPageCommand dingAttendanceOverViewPageCommand);

    /**
     * 钉钉项目考勤统计 分页 查询
     *
     * @param dingAttendanceOverViewPageCommand 查询条件
     * @return Page<DingAttendanceProjectOverViewVo>
     * */
    Page<DingAttendanceProjectOverViewVo> getDingAttendanceProjectOverViewPage(DingAttendanceProjectOverViewPageCommand dingAttendanceOverViewPageCommand);

    /**
     * 不合格项目详情 分页 查询
     *
     * @param command 查询条件
     * @return Page<DingAttendanceProjectOverViewVo>
     * */
    Page<DingAttendanceProjectOverViewVo> getDingAttendanceProjectDetailOverViewPage(DingProjectDetailPageCommand command);

    /**
     * 不合格人员详情 分页 查询
     *
     * @param command 查询条件
     * @return Page<DingPeopleDetailOverViewVo>
     * */
    Page<DingPeopleDetailOverViewVo> getDingAttendancePeopleDetailOverViewPage(DingProjectDetailPageCommand command);

    /**
     * 钉钉项目考勤详情 查询
     *
     * @param dingDingProjectRequest
     * @return DingDingAttendanceProjectVo
     * */
    DingDingAttendanceProjectVo getDingDingAttendanceProjectVo(DingDingProjectRequest dingDingProjectRequest);

    /**
     * 钉钉主体院考勤统计 查询 全部
     *
     * @param dingAttendanceOverViewPageCommand 查询条件
     * @return Page<DingAttendanceOverView>
     * */
    List<DingAttendanceOverViewVo> getDingAttendanceOrgList(DingAttendanceOverViewPageCommand dingAttendanceOverViewPageCommand);

    /**
     * 钉钉项目考勤统计 查询 全部
     *
     * @param command 查询条件
     * @return Page<DingAttendanceProjectOverViewVo>
     * */
    List<DingAttendanceProjectOverViewVo> getDingAttendanceProjectList(DingAttendanceProjectOverViewPageCommand command);
}
